package com.senlingspace.payment.douyin.bean.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.List;

/**
 * 抖音验券前置准备响应
 *
 * @author lebronjames
 * @date 2024/07/23
 */
@Data
public class DouyinPreVerifyTicketResponse implements Serializable {

    @JsonProperty("data")
    private ResponseData data;

    @JsonProperty("extra")
    private DouyinCommonResponse.Extra extra;

    @EqualsAndHashCode(callSuper = true)
    @Data
    public static class ResponseData extends DouyinCommonResponse.CommonData {

        /**
         * 一次验券的标识, 在验券接口传入
         */
        @JsonProperty("verify_token")
        private String verifyToken;

        /**
         * 可用团购券列表
         */
        @JsonProperty("certificates")
        private List<Certificate> certificates;

        /**
         * 订单id
         */
        @JsonProperty("order_id")
        private String orderId;
    }

    @Data
    public static class Certificate implements Serializable {

        /**
         * 券 ID
         */
        @JsonProperty("certificate_id")
        private Long certificateId;

        /**
         * 加密券码, 在验券接口传入
         */
        @JsonProperty("encrypted_code")
        private String encryptedCode;

        /**
         * 券码有效期，截至时间，时间戳，单位秒
         */
        @JsonProperty("expire_time")
        private Integer expireTime;

        /**
         * 团购信息
         */
        @JsonProperty("sku")
        private Sku sku;

        /**
         * 券维度金额信息
         */
        @JsonProperty("amount")
        private Amount amount;

    }

    @Data
    public static class Sku implements Serializable {

        /**
         * 团购名称
         */
        @JsonProperty("title")
        private String title;

        /**
         * 商家团购账号id
         */
        @JsonProperty("account_id")
        private String accountId;

        /**
         * 团购市场价，单位分
         */
        @JsonProperty("market_price")
        private Integer marketPrice;

        /**
         * 团购SKU ID
         */
        @JsonProperty("sku_id")
        private String skuId;

        /**
         * 团购售卖开始时间，时间戳，单位秒
         */
        @JsonProperty("sold_start_time")
        private Integer soldStartTime;

        /**
         * 商家系统（第三方）团购id
         */
        @JsonProperty("third_sku_id")
        private String thirdSkuId;

    }

    @Data
    public static class Amount implements Serializable {

        /**
         * 券原始金额，单位分
         */
        @JsonProperty("original_amount")
        private Integer originalAmount;

        /**
         * 用户实付金额，单位分
         */
        @JsonProperty("pay_amount")
        private Integer payAmount;

        /**
         * 商家营销金额，单位分
         */
        @JsonProperty("merchant_ticket_amount")
        private Integer merchantTicketAmount;

        /**
         * 支付优惠金额，单位分
         */
        @JsonProperty("payment_discount_amount")
        private Integer paymentDiscountAmount;

        /**
         * 券实付金额。券实付金额 = 用户实付金额 + 支付优惠金额，单位分
         */
        @JsonProperty("coupon_pay_amount")
        private Integer couponPayAmount;

        /**
         * 券划线价金额，单位分
         */
        @JsonProperty("list_market_amount")
        private Integer listMarketAmount;

        /**
         * 平台优惠金额，单位分
         */
        @JsonProperty("platform_discount_amount")
        private Integer platformDiscountAmount;

    }

}
